<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // 【0】创建数组
    // 【0-1】使用构造函数的方式
    var a = new Array(1, 2);
    // 答案
    // 【0-2】使用构造函数直接调用
    // 答案
    var b = Array(1, 2);
    //【0-3】如果知道数组元素的个数，也可以直接传入数字表示元素个数：
    // 答案

    // 【0-4】也可以直接传入数组元素：
    // 答案
    // 【0-5】字面量法创建
    // 答案
    //【1】数组的长度
    // 【1-1】长度置零可以清空一个数组。置为负值，会报错
    // 答案
    // 【1-2】长度设置为比数组长度小的值，可以删除元素：后面的元素就会被移除掉
    // 答案
    //【1-3】如果将length设置成比原来大的数值会怎么样呢？多出来的元素都是undefined
    // 答案
    // 【2】静态方法
    // 【2-1】Array.from()
    // 【2-2】Array.isArray()
    // 【2-3】Array.of()
    // 【3】继承自Object的方法
    // 【3-1】toString()
    // 【3-2】valueOf()
    // 【4】数组的判定方法
    // 【4-1】every()
    [1, 2, 3, 4].every(function(v, i, origin) {
        return v > 2
    });
    // 【4-2】some()
    [1, 2, 3, 4].some(function(v, i, origin) {
        return v > 2
    });
    // 【5】数组的栈和队列方法
    // 【5-1】尾删方法
    [1, 2, 3].pop();
    // 【5-2】尾推方法
    [1, 2, 3].puhs(4);
    // 【5-3】前删方法
    [1, 2, 3].shift();
    // 【5-4】前增方法
    [1, 2, 3].unshift(1, 2);
    // 【6】元素索引方法
    // 【6-1】indexOf()方法
    // 【6-2】lastIndexOf()方法
    // 【7】元素查找方法
    // 【7-1】findIndex()方法
    // 【7-2】find()方法
    // 【8】元素排序方法
    // 【8-1】正向排序方法[标记]
    [1, 2, 3, 11, 4].sort(function(a, b) {
        return a - b;
    });
    // 【8-2】反向排序方法[标记]
    [1, 2, 3, 11, 4].sort(function(a, b) {
        return b - a;
    });
    // 【8-3】数组翻转
    [1, 2, 3, 4, 5].reverse();
    // 【9】元素遍历方法
    // 【9-1】filter()
    [1, 2, 4, 12, 3].filter(function(v, i, arr) {
        return v > 2;
    });
    // 【9-2】forEach()[标记]
    [1, 2, 4, 12, 3].forEach(function(v, i, arr) {
        arr[i] = arr[i] + 10;
    });
    // 【9-3】reduce()
    [1, 2, 4, 12, 3].reduce(function(pre, cur) {
        return pre + cur
    });
    // 【9-4】reduceRight()[此处为反向进行累加]
    [1, 2, 4, 12, 3].reduceRight(function(pre, cur) {
        return pre + cur
    });
    // 【9-5】map()[标记]
    [1, 2, 4, 12, 3].map(function(v, i, arr) {
        return v + "#";
    });
    // 【9-6】for in 遍历模式
    // 【10】数组操作方法
    // 【10-1】数组拼接[标记]
    [1, 2].concat([3, 4]);
    // 【10-2】数组截取[标记]
    [1, 2, 3, 4, 5, 6].slice(2, 4); //包含2，但是不包含4
    // 【10-3】数组删除并替换[标记]
    [1, 2, 3, 4, 5, 6].splice(2, 2, 10, 11, 12);
    // 【10-4】数组转字符串
    [1, 2, 3, 4, 5, 6].join(",");
    // 【11】数组检测
    // 【11-1】isArray()方法
    // 【11-2】toString()方法
    // 【11-3】instanceof()方法
    // 分割线=============
    // 【1】数组去重[标记]【对象属性媒介进行数组去重】
    var a = [1, 2, 2, 4, 5, 4];
    var obj = {};
    var target = [];
    for (var i = 0; i < a.length; i++) {
        if (!obj[a[i]]) {
            obj[a[i]] = 1;
            target.push(a[i]);
        }
    };
</script>

</html>